﻿using System.Text.Json.Serialization;

namespace SMCL.Core.Utils.Types.Json
{
    public class GameInfo
    {
        /// <summary>
        /// Null for Old Versions
        /// </summary>
        [JsonInclude, JsonPropertyName("arguments")]
        public GameInfo_Arguments? Arguments { get; set; }
        [JsonInclude, JsonPropertyName("assetIndex")]
        public GameInfo_AssetIndex AssetIndex { get; set; }
        [JsonInclude, JsonPropertyName("assets")]
        public string Assets { get; set; }
        [JsonInclude, JsonPropertyName("complianceLevel")]
        public int ComplianceLevel { get; set; }
        [JsonInclude, JsonPropertyName("downloads")]
        public GameInfo_Downloads Downloads { get; set; }
        [JsonInclude, JsonPropertyName("id")]
        public string Id { get; set; }
        [JsonInclude, JsonPropertyName("javaVersion")]
        public GameInfo_JavaVersion JavaVersion { get; set; }
        [JsonInclude, JsonPropertyName("libraries")]
        public GameInfo_Library[] Libraries { get; set; }
        [JsonInclude, JsonPropertyName("logging")]
        public GameInfo_Logging Logging { get; set; }
        [JsonInclude, JsonPropertyName("mainClass")]
        public string MainClass { get; set; }
        /// <summary>
        /// Null for New Versions
        /// </summary>
        [JsonInclude, JsonPropertyName("minecraftArguments")]
        public string? MinecraftArguments { get; set; }
        [JsonInclude, JsonPropertyName("minimumLauncherVersion")]
        public int MiniumLauncherVersion { get; set; }
        [JsonInclude, JsonPropertyName("releaseTime")]
        public DateTime ReleaseTime { get; set; }
        [JsonInclude, JsonPropertyName("time")]
        public DateTime Time { get; set; }
        [JsonInclude, JsonPropertyName("type")]
        public string Type { get; set; }
    }
}
